const prefixCls = 'ivu-picker-panel'
const datePrefixCls = 'ivu-date-picker'

export default {
  props: {
    confirm: {
      type: Boolean,
      default: false
    }
  },
  methods: {
    iconBtnCls (direction, type = '') {
      return [
        `${prefixCls}-icon-btn`,
        `${datePrefixCls}-${direction}-btn`,
        `${datePrefixCls}-${direction}-btn-arrow${type}`
      ]
    },
    handleShortcutClick (shortcut) {
      if (shortcut.value) this.$emit('on-pick', shortcut.value())
      if (shortcut.onClick) shortcut.onClick(this)
    },
    handlePickClear () {
      this.resetView()
      this.$emit('on-pick-clear')
    },
    handlePickSuccess () {
      this.resetView()
      this.$emit('on-pick-success')
    },
    handlePickClick () {
      this.$emit('on-pick-click')
    },
    resetView () {
      setTimeout(
        () => (this.currentView = this.selectionMode),
        500 // 500ms so the dropdown can close before changing
      )
    },
    handleClear () {
      this.dates = this.dates.map(() => null)
      this.rangeState = {}
      this.$emit('on-pick', this.dates)
      this.handleConfirm()
      //  if (this.showTime) this.$refs.timePicker.handleClear();
    },
    handleConfirm (visible, type) {
      this.$emit('on-pick', this.dates, visible, type || this.type)
    },
    onToggleVisibility (open) {
      const { timeSpinner, timeSpinnerEnd } = this.$refs
      if (open && timeSpinner) timeSpinner.updateScroll()
      if (open && timeSpinnerEnd) timeSpinnerEnd.updateScroll()
    }
  }
}
